package com.example.demo.service;

import com.example.demo.common.response.ResponsePage;
import com.example.demo.entity.*;
import com.example.demo.entity.Dto.AbnormalInfo;
import com.example.demo.entity.Dto.HealthExaminationRecordDto;
import com.example.demo.entity.Dto.TotalInfo;
import com.example.demo.entity.Dto.VaccinationDto;
import com.example.demo.entity.VO.PetHealthInfo;
import com.example.demo.entity.VO.PetInfoDetail;
import com.example.demo.entity.VO.VaccinationRecord;
import com.example.demo.entity.VO.VaccinationVO;
import com.example.demo.entity.param.ExaminationRecordParam;
import com.example.demo.entity.param.PetParam;
import com.example.demo.entity.param.PetRecordInfoParam;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface PetInfoService {
    ResponsePage<PetHealthInfo> getPetHeathInfo(PetParam petParam);

    void addPet(Pet pet);

    void editPet(Pet pet);

    ResponsePage<Pet> getPet(PetParam pet);

    List<PetInfoDetail> getPetInfo();

    List<VaccinationVO> getAllVaccination();

    List<VaccinationDto> getVaccinationRecord();

    void addVaccinationRecord(VaccinationRecord vaccinationRecord);

    List<PetHealthExaminationRecord> getHealthCheckUpRecords(ExaminationRecordParam param);

    List<PetActivities> getPetActivityList();

    List<PetDrink> getPetDrinkInfo();

    List<AnomalyRecord> getAnomalyRecord(String anomaly);

    TotalInfo getTotalInfoById(Integer id);

    List<PetInfoDetail> editPetInfo();

    void editPetInfo(Pet pet);

    void addPetDailyInfo(PetDailyData data);

    void updateVaccinationRecord(VaccinationRecord vaccinationRecord);

    AbnormalInfo checkPetAbnormalInfo();

    void updatePetAbormal(AnomalyRecord record);

    List<Doctor> getDocList();

    void editDocInfo(Doctor doc);
    void addDoctor(Doctor doc);

    void addPhysicalRecord(PetRecordInfoParam param);

    void editPetImg(PetImgs img);

    void addPetHealthExaminationRecord(PetHealthExaminationRecord record);

    List<HealthExaminationRecordDto> getPetHealthExaminationRecordList(Integer petId);

    List<HealthExaminationRecordDto> searchHealthExaminationRecordList(HealthExaminationRecordDto param);

    List<PetInfoDetail> getPetInfo2(PetInfoDetail pet);



    void addPetAbormal(AnomalyRecord record);




    void addPetDrink(PetDrink petDrink);

    Integer petDataStatistic();

    void addPetActivity(PetActivities petActivities);

    void cleanPetActivity(Integer petId);
}
